草庐IT

Codeforces 1682 D Circular Spanning Tree

全部标签

Codeforces Round 865 (Div. 2) A-E

CodeforcesRound865(Div.2)A.IanVisitsMaryvoidsolve(){intx=read(),y=read();if(__gcd(y,x)!=1){cout2endl;cout1""1endl;cout""endl;}else{cout1"\n";cout"""\n";}//puts(ans>0?"YES":"NO");//puts(ans>0?"Yes":"No");} B.GridReconstruction自己写了挺长一串的这是赛后学习jiangly的代码voidsolve(){intn=read();for(inti=0;i2;i++){for(int

Codeforces Round 865 (Div. 2) A-E

CodeforcesRound865(Div.2)A.IanVisitsMaryvoidsolve(){intx=read(),y=read();if(__gcd(y,x)!=1){cout2endl;cout1""1endl;cout""endl;}else{cout1"\n";cout"""\n";}//puts(ans>0?"YES":"NO");//puts(ans>0?"Yes":"No");} B.GridReconstruction自己写了挺长一串的这是赛后学习jiangly的代码voidsolve(){intn=read();for(inti=0;i2;i++){for(int

Codeforces #821 Div2(A~D2)题解

CF#821Div2AConsecutiveSum题目:​ 选择\(i\)和\(j\),如果\(j=i+xk(x=R)\),可以交换\(i,j\)。任意选择一段长度为k的相加。思路:​ 题目等价于在下标\(mod\)k相同的数中选一个最大的。简单模拟。可以用vis标记或者优先队列。实现:​ 不值一提。voidsolve(){cin>>n>>k;priority_queueq[105];for(inti=0;i>x;q[(i+1)%k].push(x);}llres=0;for(inti=0;iBRuleofLeague(分类讨论)题目:​ 有n个人,他们之间会进行n-1场比赛。将人分成两部分

Codeforces #821 Div2(A~D2)题解

CF#821Div2AConsecutiveSum题目:​ 选择\(i\)和\(j\),如果\(j=i+xk(x=R)\),可以交换\(i,j\)。任意选择一段长度为k的相加。思路:​ 题目等价于在下标\(mod\)k相同的数中选一个最大的。简单模拟。可以用vis标记或者优先队列。实现:​ 不值一提。voidsolve(){cin>>n>>k;priority_queueq[105];for(inti=0;i>x;q[(i+1)%k].push(x);}llres=0;for(inti=0;iBRuleofLeague(分类讨论)题目:​ 有n个人,他们之间会进行n-1场比赛。将人分成两部分

Codeforces 1684 E. MEX vs DIFF

题意给你n个非负整数的数列a,你可以进行K次操作,每次操作可以将任意位置的数数更改成任意一个非负整数,求操作以后,DIFF(a)-MEX(a)的最小值;DIFF代表数组中数的种类。MEX代表数组中未出现的最小自然数。提示1.显然DIFF(a)-MEX(a)最小,DIFF(a)越小越好,MEX(a)越大越好2.假如DIFF降低,同时MEX提升,这样操作是不亏的,因此我们只需要提升MEX即可,贪心的的构造0-x,x为k次修改,能构建到mex的最大的数列a状态。3.在原始a中,0-x中空缺的值即为需要填充个数的值,我们只需要贪心,先填入出现次数少的>x的值,以降低它的DIFF,即MEX固定了,再降低

Codeforces1695 D1.+D2 Tree Queries

题意给一个n个点的无向图,其中有一个隐藏点X,可以进行一组询问S来确定S是n个节点中的哪个点。S包括k个询问节点。询问返回的值也为k个值,每个值为X点到每个询问节点的最短路距离,求k最小为多少。提示1.对于k个节点来说,最优的结构肯定是选择所有的叶子节点2.对于一个节点来说,假如它连了m条链(包括单个叶子节点),可以只标记m-1条链的叶子节点即可3.满足1,2条件以后,可以尝试再去询问点,发现均无法全部检测到,原因是:假如去点m-2条链,剩下的两条链,相同深度部分对于其他的节点来说是无法判断的,他们是等价的方法可以树形DP,一下,或者从每个叶子节点开始搜索一下,这里主要将树形DP的方法:dp[

Codeforces 1684 E. MEX vs DIFF

题意给你n个非负整数的数列a,你可以进行K次操作,每次操作可以将任意位置的数数更改成任意一个非负整数,求操作以后,DIFF(a)-MEX(a)的最小值;DIFF代表数组中数的种类。MEX代表数组中未出现的最小自然数。提示1.显然DIFF(a)-MEX(a)最小,DIFF(a)越小越好,MEX(a)越大越好2.假如DIFF降低,同时MEX提升,这样操作是不亏的,因此我们只需要提升MEX即可,贪心的的构造0-x,x为k次修改,能构建到mex的最大的数列a状态。3.在原始a中,0-x中空缺的值即为需要填充个数的值,我们只需要贪心,先填入出现次数少的>x的值,以降低它的DIFF,即MEX固定了,再降低

Codeforces1695 D1.+D2 Tree Queries

题意给一个n个点的无向图,其中有一个隐藏点X,可以进行一组询问S来确定S是n个节点中的哪个点。S包括k个询问节点。询问返回的值也为k个值,每个值为X点到每个询问节点的最短路距离,求k最小为多少。提示1.对于k个节点来说,最优的结构肯定是选择所有的叶子节点2.对于一个节点来说,假如它连了m条链(包括单个叶子节点),可以只标记m-1条链的叶子节点即可3.满足1,2条件以后,可以尝试再去询问点,发现均无法全部检测到,原因是:假如去点m-2条链,剩下的两条链,相同深度部分对于其他的节点来说是无法判断的,他们是等价的方法可以树形DP,一下,或者从每个叶子节点开始搜索一下,这里主要将树形DP的方法:dp[

Codeforces 1682 D Circular Spanning Tree

题意1-n排列,构成一个圆;1-n每个点有个值0或者1,0代表点的度为偶数,1代表点的度为计数;询问能否构成一棵树,树的连边在圆内不会相交,在圆边上可以相交,可以则输出方案。提示1.首先考虑什么时候无解,显然,奇数点个数是偶数,并且>=22.由奇数点个数为偶数可以发现,它们可以连到同一个偶数点上(并非直接连)3.剩下的偶数点可以直接顺时针串联,直到连到最近的一个奇数点上4.相当于每个奇数点后面有一条偶数链,或者没有偶数链只有一个奇点(这都是一样的,因为链最后一个点都只剩下一个需要连的点),直接把链的最后一个点连在一起就好了代码#includeusingnamespacestd;chars[20

Codeforces 1682 D Circular Spanning Tree

题意1-n排列,构成一个圆;1-n每个点有个值0或者1,0代表点的度为偶数,1代表点的度为计数;询问能否构成一棵树,树的连边在圆内不会相交,在圆边上可以相交,可以则输出方案。提示1.首先考虑什么时候无解,显然,奇数点个数是偶数,并且>=22.由奇数点个数为偶数可以发现,它们可以连到同一个偶数点上(并非直接连)3.剩下的偶数点可以直接顺时针串联,直到连到最近的一个奇数点上4.相当于每个奇数点后面有一条偶数链,或者没有偶数链只有一个奇点(这都是一样的,因为链最后一个点都只剩下一个需要连的点),直接把链的最后一个点连在一起就好了代码#includeusingnamespacestd;chars[20